package cn.creditease.std.consumer;

import cn.creditease.std.enums.TryConsumeStatusEnums;
import cn.creditease.std.model.Job;
import java.util.List;
import java.util.function.Function;

/**
 * @Description: 任务消费接口定义
 * @Author: kai.yang
 * @Date: 2019-08-02 14:46
 */
public interface JobConsumer<T> {

    /**
     * 根据jobName批量补偿方法
     * @param jobName
     */
    void consume(String jobName);


    /**
     * 获取任务模版方法
     * @param jobId
     */
    void consume(String jobId,String jobName);

    /**
     * 前置处理，尝试进行处理数据
     * @return
     */
     TryConsumeStatusEnums tryProcessJob(Job job,boolean isSuccessCallback);


    /**
     * 消费任务
     * @param job
     */
    void processJob(Job job, Function<String,Boolean> function);

    /**
     * 任务后置处理
     * @param job
     */
    void afterPrecessJob(Job job, boolean result, Function<String,Boolean> calBack);

    /**
     * 获取job，业务读取具体数据
     * @return
     */
    List<T> doReader(int pageNo,int PageSize);

    /**
     * 实际任务处理
     * @param datas
     * @return
     */
    boolean doProcess(List<T> datas);

    /**
     * 任务组
     * @return
     */
    String getJobName();

    /**
     * 释放资源
     * @return
     */
    boolean release();





}
